In order to control their high packet throughput, network devices (such as routers) use memory buffers to temporarily queue packets waiting to be processed based upon predefined criteria, such as relative weight or priority. A scheduler may control the dequeuing of packets from the buffer queues. One well-known scheduling methodology is referred to as Weighted Round Robin (WRR) scheduling. In WRR scheduling, each queue is assigned a relative weight. Each WRR weight may indicate a level of priority, in which the larger the WRR weight, the higher the priority. Transmission opportunities are allocated for each queue based upon the relative weights of the queues, using a round-robin technique to cycle between the queues.
When a queue becomes empty in the middle of a WRR cycle, the network device may move on to a next highest priority queue. If the empty queue receives additional packets before that queue is activated in the next WRR cycle, that queue will typically receive full WRR weight in the next cycle. As a result, a queue going empty and non-empty at a certain frequency may obtain an unfair advantage over other queues.